/*
* lcd_controller.c，它向上要接收不同LCD的参数，向下要使用这些参数设置对应的LCD控制器。
*/
#include "lcd_control.h"
#include "../init.h"

#define LCD_CONTROLER_NUM 10

static p_lcd_controler p_arry_lcd_controler[LCD_CONTROLER_NUM];
static p_lcd_controler g_p_controler_select;

int register_lcd_controler(p_lcd_controler plcdctrl)
{
	int i = 0;
	for(i=0; i<LCD_CONTROLER_NUM; i++)
	{
		if(!p_arry_lcd_controler[i])
		{
			p_arry_lcd_controler[i] = plcdctrl;
			return i;
		}
	}
	return -1;
}

int select_lcd_controler(char *name)
{
	int i;
	for(i=0; i<LCD_CONTROLER_NUM; i++)
	{///////(!p_arry_lcd_controler[i]) 判断错误导致控制器选择失败，无法刷图，也可以把这个去掉，肯定也可以
		if((p_arry_lcd_controler[i]) && (!strcmp(p_arry_lcd_controler[i]->name, name)))	//strcmp 成功返回0
			g_p_controler_select = p_arry_lcd_controler[i];
		return i;
	}
	return -1;
}

int lcd_control_init(p_lcd_params params)
{
	if(g_p_controler_select)
	{
		g_p_controler_select->init(params);
		return 1;
	}
	return -1;
}

void lcd_control_enable(void)
{
	if(g_p_controler_select)
		g_p_controler_select->enable();
}

void lcd_control_disable(void)
{
	if(g_p_controler_select)
		g_p_controler_select->disable();
}

//这个是什么意思，看不懂---看lcd.c就是调用这个，注册这个控制器，当然这里面还可以增加其他控制器选择
void lcd_control_add(void)
{
	s3c2440_lcd_control_add();
}

